﻿Imports System.Data
Imports System.Data.SqlClient
Imports CondorTravel.BE
Imports CondorTravelUTIL.DL



Public Class ServicioDALC



    Public Function InsertarServicio(ByVal objServicioBE As ServicioBE, ByRef iCodigoServicio As Integer, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(5) As SqlParameter


        Try

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@C_COD_UNI_SERVICIO"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objServicioBE.Unidad

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@C_COD_TIPO_SERVICIO"
            arrSqlParameter(1).SqlDbType = SqlDbType.Int
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objServicioBE.TipoServicio

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@T_DES_SERVICIO"
            arrSqlParameter(2).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(2).Size = 50
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objServicioBE.NombreServicio

            arrSqlParameter(3) = New SqlParameter()
            arrSqlParameter(3).ParameterName = "@C_COD_SOL_SERVICIO"
            arrSqlParameter(3).SqlDbType = SqlDbType.Int
            arrSqlParameter(3).Direction = ParameterDirection.Input
            arrSqlParameter(3).Value = objServicioBE.CodSolicitudServicio

            arrSqlParameter(4) = New SqlParameter()
            arrSqlParameter(4).ParameterName = "@T_USU_CREACION"
            arrSqlParameter(4).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(4).Size = 10
            arrSqlParameter(4).Direction = ParameterDirection.Input
            arrSqlParameter(4).Value = objServicioBE.UsuarioCreador

            arrSqlParameter(5) = New SqlParameter()
            arrSqlParameter(5).ParameterName = "@COD_SERVICIO"
            arrSqlParameter(5).SqlDbType = SqlDbType.Int
            arrSqlParameter(5).Direction = ParameterDirection.Output
            arrSqlParameter(5).Value = 0


            Dim oDatos As New AccesoDatos()
            'Dim iCodigoServicio As Integer
            oDatos.EjecutaSP("SP_AdministracionServicioIns", bExito, sMensaje, arrSqlParameter)

            If bExito Then

                iCodigoServicio = oDatos.Parametro("@COD_SERVICIO")
                objServicioBE.CodServicio = iCodigoServicio

            End If

            Return bExito

        Catch ex As Exception
            Throw
        End Try

    End Function

    Public Function InsertarDetalleServicio(ByVal objServicioBE As ServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(2) As SqlParameter


        Try

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@C_COD_SERVICIO"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objServicioBE.CodServicio

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@T_USU_CREACION"
            arrSqlParameter(1).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(1).Size = 10
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objServicioBE.UsuarioCreador

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@C_COD_PROVEEDOR"
            arrSqlParameter(2).SqlDbType = SqlDbType.Int
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objServicioBE.CodProveedor


            Dim oDatos As New AccesoDatos()

            oDatos.EjecutaSP("SP_AdministracionDetalleServicioIns", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            Throw
        End Try

    End Function

    Public Function InsertarTarifaServicio(ByVal objServicioBE As ServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(5) As SqlParameter


        Try

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@C_COD_SERVICIO"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objServicioBE.CodServicio

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@T_USU_CREACION"
            arrSqlParameter(1).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(1).Size = 10
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objServicioBE.UsuarioCreador

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@C_COD_PROVEEDOR"
            arrSqlParameter(2).SqlDbType = SqlDbType.Int
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objServicioBE.CodProveedor

            arrSqlParameter(3) = New SqlParameter()
            arrSqlParameter(3).ParameterName = "@C_COD_CIUDAD"
            arrSqlParameter(3).SqlDbType = SqlDbType.Int
            arrSqlParameter(3).Direction = ParameterDirection.Input
            arrSqlParameter(3).Value = objServicioBE.codCiudad

            arrSqlParameter(4) = New SqlParameter()
            arrSqlParameter(4).ParameterName = "@C_COD_TIPO_TARIFA"
            arrSqlParameter(4).SqlDbType = SqlDbType.Int
            arrSqlParameter(4).Direction = ParameterDirection.Input
            arrSqlParameter(4).Value = objServicioBE.codTipoTarifa

            arrSqlParameter(5) = New SqlParameter()
            arrSqlParameter(5).ParameterName = "@TARIFA"
            arrSqlParameter(5).SqlDbType = SqlDbType.Float
            arrSqlParameter(5).Direction = ParameterDirection.Input
            arrSqlParameter(5).Value = objServicioBE.Tarifa

            Dim oDatos As New AccesoDatos()

            oDatos.EjecutaSP("SP_AdministracionTarifaServicioIns", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            Throw
        End Try

    End Function

    Public Function InsertarDistribucionServicio(ByVal objServicioBE As ServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(3) As SqlParameter


        Try

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@C_COD_SERVICIO"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objServicioBE.CodServicio

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@T_USU_CREACION"
            arrSqlParameter(1).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(1).Size = 10
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objServicioBE.UsuarioCreador

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@C_COD_PROVEEDOR"
            arrSqlParameter(2).SqlDbType = SqlDbType.Int
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objServicioBE.CodProveedor

            arrSqlParameter(3) = New SqlParameter()
            arrSqlParameter(3).ParameterName = "@C_COD_CIUDAD"
            arrSqlParameter(3).SqlDbType = SqlDbType.Int
            arrSqlParameter(3).Direction = ParameterDirection.Input
            arrSqlParameter(3).Value = objServicioBE.codCiudad


            Dim oDatos As New AccesoDatos()

            oDatos.EjecutaSP("SP_AdministracionDistribucionServicioIns", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            Throw
        End Try

    End Function

    Public Function ModificaCabeceraServicio(ByVal objServicioBE As ServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(5) As SqlParameter

        Try
       
            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@COD_SERVICIO"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objServicioBE.CodServicio

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@C_COD_UNI_SERVICIO"
            arrSqlParameter(1).SqlDbType = SqlDbType.Int
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objServicioBE.Unidad

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@C_COD_TIPO_SERVICIO"
            arrSqlParameter(2).SqlDbType = SqlDbType.Int
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objServicioBE.CodTipoServicio

            arrSqlParameter(3) = New SqlParameter()
            arrSqlParameter(3).ParameterName = "@T_DES_SERVICIO"
            arrSqlParameter(3).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(3).Size = 50
            arrSqlParameter(3).Direction = ParameterDirection.Input
            arrSqlParameter(3).Value = objServicioBE.NombreServicio

            arrSqlParameter(4) = New SqlParameter()
            arrSqlParameter(4).ParameterName = "@C_COD_SOL_SERVICIO"
            arrSqlParameter(4).SqlDbType = SqlDbType.Int
            arrSqlParameter(4).Direction = ParameterDirection.Input
            arrSqlParameter(4).Value = objServicioBE.CodSolicitudServicio

            arrSqlParameter(5) = New SqlParameter()
            arrSqlParameter(5).ParameterName = "@T_USUARIO"
            arrSqlParameter(5).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(5).Size = 10
            arrSqlParameter(5).Direction = ParameterDirection.Input
            arrSqlParameter(5).Value = objServicioBE.UsuarioCreador


            Dim oDatos As New AccesoDatos()

            oDatos.EjecutaSP("SP_UpdateCabServicio", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

    End Function


    Public Function ModificaDetalleServicio(ByVal objServicioBE As ServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(8) As SqlParameter

        Try

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@COD_DIST_TARIFA "
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objServicioBE.CodTarifaServProv

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@COD_SERVICIO"
            arrSqlParameter(1).SqlDbType = SqlDbType.Int
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objServicioBE.CodServicio

            arrSqlParameter(2) = New SqlParameter()
            arrSqlParameter(2).ParameterName = "@COD_PAIS"
            arrSqlParameter(2).SqlDbType = SqlDbType.Int
            arrSqlParameter(2).Direction = ParameterDirection.Input
            arrSqlParameter(2).Value = objServicioBE.codPais

            arrSqlParameter(3) = New SqlParameter()
            arrSqlParameter(3).ParameterName = "@COD_CIUDAD"
            arrSqlParameter(3).SqlDbType = SqlDbType.Int
            arrSqlParameter(3).Direction = ParameterDirection.Input
            arrSqlParameter(3).Value = objServicioBE.codCiudad

            arrSqlParameter(4) = New SqlParameter()
            arrSqlParameter(4).ParameterName = "@COD_PROVEEDOR"
            arrSqlParameter(4).SqlDbType = SqlDbType.Int
            arrSqlParameter(4).Direction = ParameterDirection.Input
            arrSqlParameter(4).Value = objServicioBE.CodProveedor

            arrSqlParameter(5) = New SqlParameter()
            arrSqlParameter(5).ParameterName = "@COD_TIPO_TARIFA"
            arrSqlParameter(5).SqlDbType = SqlDbType.Int
            arrSqlParameter(5).Direction = ParameterDirection.Input
            arrSqlParameter(5).Value = objServicioBE.codTipoTarifa

            arrSqlParameter(6) = New SqlParameter()
            arrSqlParameter(6).ParameterName = "@TARIFA"
            arrSqlParameter(6).SqlDbType = SqlDbType.Float
            arrSqlParameter(6).Direction = ParameterDirection.Input
            arrSqlParameter(6).Value = objServicioBE.Tarifa

            arrSqlParameter(7) = New SqlParameter()
            arrSqlParameter(7).ParameterName = "@USUARIO"
            arrSqlParameter(7).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(7).Size = 10
            arrSqlParameter(7).Direction = ParameterDirection.Input
            arrSqlParameter(7).Value = objServicioBE.UsuarioCreador

            arrSqlParameter(8) = New SqlParameter()
            arrSqlParameter(8).ParameterName = "@ESTADO"
            arrSqlParameter(8).SqlDbType = SqlDbType.VarChar
            arrSqlParameter(8).Size = 1
            arrSqlParameter(8).Direction = ParameterDirection.Input
            arrSqlParameter(8).Value = objServicioBE.EstadoTarServProv


            Dim oDatos As New AccesoDatos()

            oDatos.EjecutaSP("SP_UpdateDetServicio", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

    End Function

    Public Function ValidarExisteServicioAsociado(ByVal objServicioBE As ServicioBE) As Boolean


        Dim arrSqlParameter(1) As SqlParameter
        Dim bexito As Boolean
        Dim sMensaje As String = String.Empty

        Try

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@SERVICIO"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objServicioBE.CodServicio

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@CONTADOR"
            arrSqlParameter(1).SqlDbType = SqlDbType.Int
            arrSqlParameter(1).Direction = ParameterDirection.Output
            arrSqlParameter(1).Value = objServicioBE.Contador


            Dim oDatos As New AccesoDatos()
            Dim iContador As Integer
            oDatos.EjecutaSP("SP_ValidaServicioxEliminar", bexito, sMensaje, arrSqlParameter)

            If bexito Then
                iContador = oDatos.Parametro("@CONTADOR")

                If iContador > 0 Then
                    Return False
                Else
                    Return True
                End If
            Else

                Return False
            End If

            'Return iContador

        Catch ex As Exception
            Throw
        End Try

    End Function


    Public Function EliminarServicio(ByVal objServicioBE As ServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As Boolean

        Dim arrSqlParameter(0) As SqlParameter

        Try

            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).ParameterName = "@SERVICIO"
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.Input
            arrSqlParameter(0).Value = objServicioBE.CodServicio

            Dim oDatos As New AccesoDatos()
            '´ñ
            oDatos.EjecutaSP("SP_Servicio_Eliminar", bExito, sMensaje, arrSqlParameter)

            Return bExito

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

    End Function


    Public Function EliminarSolicitudServicio(ByVal objSolicitudServicioBE As SolicitudServicioBE) As Integer

        Dim arrSqlParameter(5) As SqlParameter
        Dim sqlSolicitudServicioEliminar As String
        Dim iNumIncidente As Integer

        Try
            '1. Definir la sentencia a ejecutar
            sqlSolicitudServicioEliminar = "SP_SolicitudServicioDel"

            '2. Definir e instanciar los parámetros a utilizar
            arrSqlParameter(0) = New SqlParameter()
            arrSqlParameter(0).SqlDbType = SqlDbType.Int
            arrSqlParameter(0).Direction = ParameterDirection.ReturnValue

            arrSqlParameter(1) = New SqlParameter()
            arrSqlParameter(1).ParameterName = "@C_COD_SERVICIO"
            arrSqlParameter(1).SqlDbType = SqlDbType.Int
            arrSqlParameter(1).Direction = ParameterDirection.Input
            arrSqlParameter(1).Value = objSolicitudServicioBE.CodSolicitud



            '3. Ejecutar la sentencia
            SqlHelper.ExecuteNonQuery(GetConnectionString, _
                                      CommandType.StoredProcedure, _
                                      sqlSolicitudServicioEliminar, _
                                      arrSqlParameter)

            '4. Recuperar el valor de retorno
            iNumIncidente = arrSqlParameter(0).Value

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return iNumIncidente

    End Function

    Public Function ListaServicioList(ByVal objServicioBE As ServicioBE) As List(Of ServicioBE)

        Dim sqlListar As String
        Dim objListaServicio As New List(Of ServicioBE)
        Dim arrSqlParameter(3) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        Dim blnExito As Boolean
        Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_Servicio_List"


            arrSqlParameter(0) = New SqlParameter("@SERVICIO", System.Data.SqlDbType.VarChar)
            arrSqlParameter(0).Value = objServicioBE.NombreServicio

            arrSqlParameter(1) = New SqlParameter("@COD_TIPO", System.Data.SqlDbType.Int)
            arrSqlParameter(1).Value = objServicioBE.CodTipoServicio

            'arrSqlParameter(2) = New SqlParameter("@ESTADO", System.Data.SqlDbType.VarChar)
            'arrSqlParameter(2).Value = objServicioBE.Estado

            arrSqlParameter(2) = New SqlParameter("@FEC_INICIO", System.Data.SqlDbType.VarChar)
            arrSqlParameter(2).Value = objServicioBE.FechaInicio

            arrSqlParameter(3) = New SqlParameter("@FEC_FIN", System.Data.SqlDbType.VarChar)
            arrSqlParameter(3).Value = objServicioBE.FechaFin



            ds = objDatos.DevuelveDataSet(sqlListar, blnExito, strMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaServicio = New List(Of ServicioBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objServicioBE = New ServicioBE()
                    objServicioBE.CodServicio = dt.Rows(intI).ItemArray(0).ToString
                    objServicioBE.NombreServicio = dt.Rows(intI).ItemArray(1).ToString
                    objServicioBE.CodTipoServicio = dt.Rows(intI).ItemArray(2).ToString
                    objServicioBE.TipoServicio = dt.Rows(intI).ItemArray(3).ToString
                    'objServicioBE.CodProveedor = dt.Rows(intI).ItemArray(4).ToString
                    'objServicioBE.DesProveedor = dt.Rows(intI).ItemArray(5).ToString
                    objServicioBE.Estado = dt.Rows(intI).ItemArray(4).ToString
                    objServicioBE.FechaCreacion = dt.Rows(intI).ItemArray(5).ToString
                    objServicioBE.UsuarioCreador = dt.Rows(intI).ItemArray(6).ToString
                    objServicioBE.Unidad = dt.Rows(intI).ItemArray(7).ToString
                    intI = intI + 1

                    objListaServicio.Add(objServicioBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaServicio
    End Function

    Public Function ListaDtsServicio(ByVal objServicioBE As ServicioBE) As DataSet

        Dim sqlListar As String
        Dim arrSqlParameter(6) As SqlParameter
        Dim ds As DataSet

        Dim objDatos As New AccesoDatos()
        Dim blnExito As Boolean
        Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_ServicioRptList"

            arrSqlParameter(0) = New SqlParameter("@DESSER", System.Data.SqlDbType.VarChar)
            arrSqlParameter(0).Value = objServicioBE.NombreServicio


            arrSqlParameter(1) = New SqlParameter("@FECINI", System.Data.SqlDbType.VarChar)
            arrSqlParameter(1).Value = objServicioBE.FechaInicio

            arrSqlParameter(2) = New SqlParameter("@FECFIN", System.Data.SqlDbType.VarChar)
            arrSqlParameter(2).Value = objServicioBE.FechaFin

            arrSqlParameter(3) = New SqlParameter("@DESPRV", System.Data.SqlDbType.Int)
            arrSqlParameter(3).Value = objServicioBE.DesProveedor

            arrSqlParameter(4) = New SqlParameter("@CODEST", System.Data.SqlDbType.VarChar)
            arrSqlParameter(4).Value = objServicioBE.Estado


            arrSqlParameter(5) = New SqlParameter("@CODPAI", System.Data.SqlDbType.Int)
            arrSqlParameter(5).Value = objServicioBE.codPais

            arrSqlParameter(6) = New SqlParameter("@CODCIU", System.Data.SqlDbType.Int)
            arrSqlParameter(6).Value = objServicioBE.codCiudad


            ds = objDatos.DevuelveDataSet(sqlListar, blnExito, strMensaje, arrSqlParameter)
        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return ds
    End Function

    Public Function ListarServicioSel() As List(Of ServicioBE)

        Dim sqlServicioListar As String
        Dim listServicioBE As List(Of ServicioBE) = Nothing
        Dim objServicioBE As ServicioBE = Nothing
        Dim ds As DataSet
        Dim dt As DataTable

        Try

            sqlServicioListar = "SP_SelServicioList"

            Dim oDatos As New AccesoDatos()
            Dim bExito As Boolean
            Dim sMensaje As String = String.Empty
            Dim i As Integer = 0

            ds = oDatos.DevuelveDataSet(sqlServicioListar, bExito, sMensaje, Nothing)
            dt = ds.Tables(0)


            listServicioBE = New List(Of ServicioBE)()

            If dt.Rows.Count > 0 Then

                While i < dt.Rows.Count
                    objServicioBE = New ServicioBE()
                    objServicioBE.CodServicio = CType(dt.Rows(i).ItemArray(0).ToString, Integer)
                    objServicioBE.NombreServicio = dt.Rows(i).ItemArray(1).ToString
                    i = i + 1

                    listServicioBE.Add(objServicioBE)
                End While
            End If

        Catch ex As Exception
            Throw
        End Try

        Return listServicioBE

    End Function

    Public Function ListarServicioBusq(ByVal objServBE As ServicioBE) As List(Of ServicioBE)

        Dim sqlListar As String
        Dim objListaServicio As New List(Of ServicioBE)
        Dim objServicioBE As ServicioBE = Nothing
        Dim arrSqlParameter(1) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        Dim blnExito As Boolean
        Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_BuscarServiciosList"

            arrSqlParameter(0) = New SqlParameter("@CODIGO", System.Data.SqlDbType.Int)
            arrSqlParameter(0).Value = objServBE.CodServicio

            arrSqlParameter(1) = New SqlParameter("@NOMBRE", System.Data.SqlDbType.VarChar)
            arrSqlParameter(1).Value = objServBE.NombreServicio

            ds = objDatos.DevuelveDataSet(sqlListar, blnExito, strMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaServicio = New List(Of ServicioBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objServicioBE = New ServicioBE()
                    objServicioBE.CodServicio = dt.Rows(intI).ItemArray(0).ToString
                    objServicioBE.NombreServicio = dt.Rows(intI).ItemArray(1).ToString
                    objServicioBE.Unidad = dt.Rows(intI).ItemArray(2).ToString
                    objServicioBE.FechaCreacion = dt.Rows(intI).ItemArray(3).ToString
                    intI = intI + 1

                    objListaServicio.Add(objServicioBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaServicio
    End Function

    Public Function ListarCabeceraServicio(ByVal objServicioBE As ServicioBE, ByRef bExito As Boolean, ByRef sMensaje As String) As List(Of ServicioBE)

        Dim sqlListar As String
        Dim objListaServicio As New List(Of ServicioBE)
        'Dim objServicioBE As ServicioBE = Nothing
        Dim arrSqlParameter(0) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        'Dim blnExito As Boolean
        'Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_CabeceraServicio_List"

            arrSqlParameter(0) = New SqlParameter("@CODIGO", System.Data.SqlDbType.Int)
            arrSqlParameter(0).Value = objServicioBE.CodServicio

            ds = objDatos.DevuelveDataSet(sqlListar, bExito, sMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaServicio = New List(Of ServicioBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objServicioBE = New ServicioBE()
                    objServicioBE.CodServicio = dt.Rows(intI).ItemArray(0).ToString
                    objServicioBE.NombreServicio = dt.Rows(intI).ItemArray(1).ToString
                    objServicioBE.CodSolicitudServicio = dt.Rows(intI).ItemArray(2).ToString
                    objServicioBE.NombreSolicitudServicio = dt.Rows(intI).ItemArray(3).ToString
                    objServicioBE.ProveedorSolicitud = dt.Rows(intI).ItemArray(4).ToString
                    objServicioBE.Unidad = dt.Rows(intI).ItemArray(5).ToString
                    objServicioBE.CodTipoServicio = dt.Rows(intI).ItemArray(6).ToString
                    objServicioBE.Estado = dt.Rows(intI).ItemArray(7).ToString
                    objServicioBE.UsuarioCreador = dt.Rows(intI).ItemArray(8).ToString
                    objServicioBE.FechaCreacion = dt.Rows(intI).ItemArray(9).ToString
                    intI = intI + 1

                    objListaServicio.Add(objServicioBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaServicio
    End Function


    Public Function ListarDetalleServicio(ByVal objServicioBE As ServicioBE, ByRef dt As DataTable, ByRef bExito As Boolean, ByRef sMensaje As String) As List(Of ServicioBE)

        Dim sqlListar As String
        Dim objListaServicio As New List(Of ServicioBE)
        'Dim objServicioBE As ServicioBE = Nothing
        Dim arrSqlParameter(0) As SqlParameter
        Dim ds As DataSet
        'Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        'Dim blnExito As Boolean
        'Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_DetalleServicio_List"

            arrSqlParameter(0) = New SqlParameter("@CODIGO", System.Data.SqlDbType.Int)
            arrSqlParameter(0).Value = objServicioBE.CodServicio

            ds = objDatos.DevuelveDataSet(sqlListar, bExito, sMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaServicio = New List(Of ServicioBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objServicioBE = New ServicioBE()
                    objServicioBE.CodTarifaServProv = dt.Rows(intI).ItemArray(0).ToString
                    objServicioBE.CodServicio = dt.Rows(intI).ItemArray(1).ToString
                    objServicioBE.codPais = dt.Rows(intI).ItemArray(2).ToString
                    objServicioBE.descripcionPais = dt.Rows(intI).ItemArray(3).ToString
                    objServicioBE.codCiudad = dt.Rows(intI).ItemArray(4).ToString
                    objServicioBE.descripcionCiudad = dt.Rows(intI).ItemArray(5).ToString
                    objServicioBE.CodProveedor = dt.Rows(intI).ItemArray(6).ToString
                    objServicioBE.DesProveedor = dt.Rows(intI).ItemArray(7).ToString
                    objServicioBE.UsuarioCreador = dt.Rows(intI).ItemArray(8).ToString
                    objServicioBE.codTipoTarifa = dt.Rows(intI).ItemArray(9).ToString
                    objServicioBE.DescTipoTarifa = dt.Rows(intI).ItemArray(10).ToString
                    objServicioBE.Tarifa = dt.Rows(intI).ItemArray(11).ToString
                    objServicioBE.EstadoTarServProv = dt.Rows(intI).ItemArray(12).ToString

                    intI = intI + 1

                    objListaServicio.Add(objServicioBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaServicio
    End Function


    Public Function ListaServicioCiudad(ByVal objServBE As ServicioBE) As List(Of ServicioBE)

        Dim sqlListar As String
        Dim objListaServicio As New List(Of ServicioBE)
        Dim objServicioBE As ServicioBE = Nothing
        Dim arrSqlParameter(0) As SqlParameter
        Dim ds As DataSet
        Dim dt As DataTable

        Dim objDatos As New AccesoDatos()
        Dim blnExito As Boolean
        Dim strMensaje As String = String.Empty
        Dim intI As Integer = 0

        Try

            sqlListar = "SP_ServicioCiudadList"

            arrSqlParameter(0) = New SqlParameter("@C_COD_CIUDAD", System.Data.SqlDbType.VarChar)
            arrSqlParameter(0).Value = objServBE.codCiudad

            ds = objDatos.DevuelveDataSet(sqlListar, blnExito, strMensaje, arrSqlParameter)
            dt = ds.Tables(0)


            objListaServicio = New List(Of ServicioBE)()

            If dt.Rows.Count > 0 Then

                While intI < dt.Rows.Count
                    objServicioBE = New ServicioBE()
                    objServicioBE.CodServicio = dt.Rows(intI).ItemArray(0).ToString
                    objServicioBE.NombreServicio = dt.Rows(intI).ItemArray(1).ToString
                    objServicioBE.DesCiudad = dt.Rows(intI).ItemArray(2).ToString
                    objServicioBE.DesPais = dt.Rows(intI).ItemArray(3).ToString
                    objServicioBE.codCiudad = dt.Rows(intI).ItemArray(4).ToString
                    objServicioBE.codPais = dt.Rows(intI).ItemArray(5).ToString
                    intI = intI + 1

                    objListaServicio.Add(objServicioBE)
                End While
            End If

        Catch ex As Exception
            MsgBox(ex.Message, vbCritical, "Error del sistema")
            Return Nothing
            Exit Function
        End Try

        Return objListaServicio
    End Function

End Class
